package parser.simbolo.operador;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class And extends Operador {

	public And() {
		super("AND", '&', 2);
		// TODO Apéndice de constructor generado automáticamente
	}

public List<String> operar(List<String> subConjA, List<String> subConjB){ 
		Collections.sort(subConjA,this.getComparador());
		Collections.sort(subConjB,this.getComparador());
		Iterator<String> it1= subConjA.iterator();
		Iterator<String> it2= subConjB.iterator();
		List <String> resultado = new ArrayList<String>();
		String uno;
		String dos;
		if(it1.hasNext() && it2.hasNext()){
			uno = it1.next();
			dos = it2.next();
		
			do{			
				if(this.getComparador().compare(uno,dos)>=0){
										
					//Si los 2 son iguales guardo el de la primera lista y avanzo en ambas
					if(uno.equals(dos)){
						resultado.add(uno);						
						
						if(it1.hasNext()){
							uno =it1.next();
						}else{
							uno=null;
						}	
					}
					// Si el uno es mayor avanzo solo en la 2da
					if(it2.hasNext()){
						dos =it2.next();
					}else{
						dos=null;
					}					
				}else{
					// Si el dos es mayor avanzo en la primera
					if(it1.hasNext()){
						uno =it1.next();
					}else{
						uno=null;
					}
				}
				
			}while(uno!=null && dos!=null);	
			
		}	
		
		return resultado;
		
		
	}

	

}
